package web

import (
	"embed"
	"io/fs"
	"log"
)

//go:embed dist/*
var staticFiles embed.FS

// StaticHandler 返回处理静态文件的http.FileSystem
func StaticHandler() fs.FS {
	// 打印所有嵌入的文件
	log.Println("开始加载静态文件...")

	// 检查dist目录是否存在
	entries, err := staticFiles.ReadDir("dist")
	if err != nil {
		log.Printf("读取dist目录失败: %v", err)
		panic(err)
	}

	if len(entries) == 0 {
		log.Println("警告: dist目录为空")
	} else {
		log.Printf("dist目录包含 %d 个文件/目录", len(entries))
	}

	// 遍历所有文件
	err = fs.WalkDir(staticFiles, ".", func(path string, d fs.DirEntry, err error) error {
		if err != nil {
			return err
		}
		if !d.IsDir() {
			log.Printf("找到文件: %s", path)
		}
		return nil
	})
	if err != nil {
		log.Printf("遍历静态文件失败: %v", err)
	}

	// 剥离dist前缀
	fsys, err := fs.Sub(staticFiles, "dist")
	if err != nil {
		log.Printf("获取dist子目录失败: %v", err)
		panic(err)
	}

	// 验证index.html是否存在
	_, err = fsys.Open("index.html")
	if err != nil {
		log.Printf("警告: index.html不存在: %v", err)
	} else {
		log.Println("index.html 文件存在")
	}

	log.Println("静态文件加载完成")
	return fsys
}
